home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / lists / mint / l_0399 / 270 / mntinc31.zoo / fcntl.h < prev    next >
C/C++ Source or Header  |  1993-02-28  |  2KB  |  95 lines

  1. /*
  2.  *    FCNTL.H
  3.  */
  4.  
  5. #ifndef    _FCNTL_H
  6. #define    _FCNTL_H
  7.  
  8. #ifndef _COMPILER_H
  9. #include <compiler.h>
  10. #endif
  11.  
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15.  
  16. #define    O_RDONLY    0x00        /* read only */
  17. #define    O_WRONLY    0x01        /* write only */
  18. #define    O_RDWR        0x02        /* read/write */
  19. #define O_ACCMODE    0x03        /* used to mask off file access mode */
  20.  
  21. /* file sharing modes (not POSIX) */
  22. #define O_COMPAT    0x00        /* old TOS compatibility mode */
  23. #define O_DENYRW    0x10        /* deny both reads and writes */
  24. #define O_DENYW        0x20
  25. #define O_DENYR        0x30
  26. #define O_DENYNONE    0x40        /* don't deny anything */
  27. #define O_SHMODE    0x70        /* mask for file sharing mode */
  28.  
  29. #define    O_NDELAY    0x100        /* Non-blocking I/O */
  30. #ifdef __MINT__
  31. # define O_SYNC        0x00        /* sync after writes (not implemented) */
  32. #endif
  33.  
  34. /* the following flags are not passed to the OS */
  35. #define    O_CREAT        0x200        /* create new file if needed */
  36. #define    O_TRUNC        0x400        /* make file 0 length */
  37. #define    O_EXCL        0x800        /* error if file exists */
  38. #define    O_APPEND    0x1000        /* position at EOF */
  39. #define _REALO_APPEND    0x08        /* this is what MiNT uses */
  40. #ifndef __MINT__
  41. # define O_PIPE        0x2000        /* serial pipe     */
  42. #endif
  43.  
  44. /*
  45.  * defines for the access() function
  46.  */
  47. #define    F_OK            0
  48. #define    X_OK            1
  49. #define    W_OK            2
  50. #define    R_OK            4
  51.  
  52. /*
  53.  * defines for fcntl()
  54.  */
  55. #define    F_DUPFD        0    /* Duplicate fildes */
  56. #define    F_GETFD        1    /* Get fildes flags */
  57. #define    F_SETFD        2    /* Set fildes flags */
  58. #define    F_GETFL        3    /* Get file flags */
  59. #define    F_SETFL        4    /* Set file flags */
  60.  
  61. #ifdef __MINT__
  62. #define F_GETLK        5    /* Get file lock */
  63. #define F_SETLK        6    /* Set file lock */
  64.  
  65. struct flock {
  66.     short l_type;
  67. #define F_RDLCK        O_RDONLY
  68. #define F_WRLCK        O_WRONLY
  69. #define F_UNLCK        3
  70.     short l_whence;
  71.     long l_start;
  72.     long l_len;
  73.     short l_pid;
  74. };
  75. #endif /* __MINT__ */
  76.  
  77. /* smallest valid gemdos handle */
  78. /* note handle is only word (16 bit) negative, not long negative,
  79.    and since Fopen etc are declared as returning long in osbind.h
  80.    the sign-extension will not happen -- thanks ers
  81. */
  82. #ifdef __MSHORT__
  83. #define __SMALLEST_VALID_HANDLE (-3)
  84. #else
  85. #define __SMALLEST_VALID_HANDLE (0)
  86. #endif
  87.  
  88. __EXTERN int fcntl __PROTO((int f, int cmd, ...));
  89.  
  90. #ifdef __cplusplus
  91. }
  92. #endif
  93.  
  94. #endif /* _FCNTL_H */
  95.